Added post login action
This commit is contained in:
		
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -56,11 +56,14 @@ build-iPhoneSimulator/ | ||||
| # Used by RuboCop. Remote config files pulled in from inherit_from directive. | ||||
| # .rubocop-https?--* | ||||
|  | ||||
| # Ignore local config files | ||||
| config/ | ||||
|  | ||||
| # Ignore Grunt.js dependencies | ||||
| node_modules/ | ||||
|  | ||||
| # Ignore compiled CSS and JS | ||||
| public/css/ | ||||
| public/styles/ | ||||
| public/js/ | ||||
|  | ||||
| # SASS compilation cache | ||||
|   | ||||
| @@ -7,6 +7,7 @@ GEM | ||||
|       rb-inotify (~> 0.9, >= 0.9.10) | ||||
|     mustermann (3.0.0) | ||||
|       ruby2_keywords (~> 0.0.1) | ||||
|     net-ldap (0.17.1) | ||||
|     nio4r (2.5.8) | ||||
|     puma (6.0.0) | ||||
|       nio4r (~> 2.0) | ||||
| @@ -30,6 +31,7 @@ PLATFORMS | ||||
|   x86_64-linux | ||||
|  | ||||
| DEPENDENCIES | ||||
|   net-ldap (~> 0.17) | ||||
|   puma (~> 6.0) | ||||
|   rerun | ||||
|   sinatra (~> 3.0) | ||||
|   | ||||
| @@ -6,4 +6,21 @@ class AuthController < Sinatra::Base | ||||
|     } | ||||
|   end | ||||
|  | ||||
|   post '/login' do | ||||
|     ldap = Net::LDAP.new | ||||
|     ldap.host = cnf['ldap']['server_url'] | ||||
|     ldap.port = 389 | ||||
|     ldap.auth(params[:login_username], params[:login_password]) | ||||
|     if ldap.bind() | ||||
|       session['ldap_uid'] = params[:username] | ||||
|       redirect '/account/view' | ||||
|     else | ||||
|       # Authentication failure | ||||
|       erb :'auth/login', :locals => { | ||||
|         :title => 'Login to your account', | ||||
|         :fail => true | ||||
|       } | ||||
|     end | ||||
|   end | ||||
|  | ||||
| end | ||||
|   | ||||
							
								
								
									
										0
									
								
								app/models/account.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								app/models/account.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -1,4 +1,15 @@ | ||||
| $primary-color: #009688 | ||||
| $primary-color-highlight: lighten($primary-color, 10%) | ||||
| $accent-color: #795548 | ||||
| $accent-color-highlight: lighten($accent-color, 10%) | ||||
|  | ||||
| $box-shadow-1: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23) | ||||
| $box-shadow-2: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23) | ||||
|  | ||||
| $nav-height: 60px | ||||
|  | ||||
| body | ||||
|   padding-top: $nav-height | ||||
|   background: lightgrey | ||||
|  | ||||
| #main-nav | ||||
| @@ -6,8 +17,9 @@ body | ||||
|   top: 0 | ||||
|   left: 0 | ||||
|   width: 100% | ||||
|   height: 60px | ||||
|   height: $nav-height | ||||
|   background: #212121 | ||||
|   box-shadow: $box-shadow-1 | ||||
|   clear: float | ||||
|  | ||||
|   .nav-left | ||||
| @@ -21,3 +33,21 @@ body | ||||
|  | ||||
|     li | ||||
|       display: inline-block | ||||
|       color: white | ||||
|       font-size: 2rem | ||||
|       &:first-child | ||||
|         margin-left: 20px | ||||
|     a | ||||
|       display: block | ||||
|       box-sizing: border-box | ||||
|       height: $nav-height | ||||
|       padding: 12px 15px | ||||
|       font-size: 2rem | ||||
|  | ||||
| #main-wrapper | ||||
|   margin-top: 25px | ||||
|   padding: 20px 28px | ||||
|   background: white | ||||
|   border-radius: 5px | ||||
|   box-shadow: $box-shadow-2 | ||||
|  | ||||
|   | ||||
| @@ -1,8 +1,15 @@ | ||||
| require 'rubygems' | ||||
| require 'sinatra/base' | ||||
| require 'yaml' | ||||
|  | ||||
| require_relative 'app/settings.rb' | ||||
|  | ||||
| defaultCnf = YAML::load_file(File.join(__dir__, 'config/defaults.yaml')) | ||||
| cnf = YAML::load_file(File.join(__dir__, 'config/local.yaml')) | ||||
| cnf = defaultCnf.merge(cnf) | ||||
|  | ||||
| require 'net/ldap' | ||||
|  | ||||
| require_relative 'app/controllers/index.rb' | ||||
| require_relative 'app/controllers/auth.rb' | ||||
|  | ||||
|   | ||||
| @@ -1,2 +0,0 @@ | ||||
| body{background:#d3d3d3}#main-nav{position:fixed;top:0;left:0;width:100%;height:60px;background:#212121;clear:float}#main-nav .nav-left{float:left}#main-nav .nav-right{float:right}#main-nav .nav-menu ul{list-style:none}#main-nav .nav-menu li{display:inline-block} | ||||
| /*# sourceMappingURL=darkmeyer.css.map */ | ||||
| @@ -1,7 +0,0 @@ | ||||
| { | ||||
| "version": 3, | ||||
| "mappings": "AAAA,IAAI,CACF,UAAU,CAAE,OAAS,CAEvB,SAAS,CACP,QAAQ,CAAE,KAAK,CACf,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,UAAU,CAAE,OAAO,CACnB,KAAK,CAAE,KAAK,CAEZ,mBAAS,CACP,KAAK,CAAE,IAAI,CACb,oBAAU,CACR,KAAK,CAAE,KAAK,CAGZ,sBAAE,CACA,UAAU,CAAE,IAAI,CAElB,sBAAE,CACA,OAAO,CAAE,YAAY", | ||||
| "sources": ["../../assets/sass/darkmeyer.sass"], | ||||
| "names": [], | ||||
| "file": "darkmeyer.css" | ||||
| } | ||||
							
								
								
									
										11
									
								
								views/account/view.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								views/account/view.erb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| <div class="row"> | ||||
|   <div class="twelve columns"> | ||||
|     <ul> | ||||
|       <li>Username: <%= account.username %></li> | ||||
|       <li>Email address: <%= account.mail %></li> | ||||
|       <li>Display name: <%= account.displayName %></li> | ||||
|       <li>UID number: <%= account.uidNumber %></li> | ||||
|       <li>Home directory: <%= account.homeDirectory %></li> | ||||
|     </ul> | ||||
|   </div> | ||||
| </div> | ||||
| @@ -14,7 +14,7 @@ | ||||
|         <div class="three columns"><p></p></div> | ||||
|         <div class="six columns"> | ||||
|           <label for="auth_password">Password:</label> | ||||
|           <input id="auth_password" class="u-full-width" type="text" name="auth_password" required> | ||||
|           <input id="auth_password" class="u-full-width" type="password" name="auth_password" required> | ||||
|         </div> | ||||
|       </div> | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,8 @@ | ||||
| <div class="row"> | ||||
|   <div class="twelve columns"> | ||||
|     <h1>Welcome to Webdap!</h1> | ||||
|     <p>You can use this site to manage your network account. <a href="/auth/login">Click here</a> to login.</p> | ||||
|     <p>You can use this site to manage your network account. <i class="fa-solid fa-address-book"></i></p> | ||||
|  | ||||
|     <p><a href="/auth/login">Click here</a> to login.</p> | ||||
|   </div> | ||||
| </div> | ||||
|   | ||||
| @@ -6,6 +6,7 @@ | ||||
|   <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||
|   <title><%= title %> | Webdap</title> | ||||
|   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css"> | ||||
|   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/css/all.min.css"> | ||||
|   <link rel="stylesheet" href="/styles/darkmeyer.css"> | ||||
|   <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script> | ||||
|   <script src="/js/meiyerditch.js"></script> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user